package com.code.AZPlan.model.bo;

import com.code.AZPlan.model.po.AZPlanBalance;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 入金业务对象
 *
 * @author tangyifei
 * @since 2019年12月31日16:02:18
 */
@ApiModel("入金业务对象")
@Data
@EqualsAndHashCode(callSuper = false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(value = {"handler"})
public class EntryMoneyBO implements Serializable {

    private static final long serialVersionUID = 5059989654310953537L;

    @ApiModelProperty(value = "用户主键", example = "1")
    @NotBlank(message = "用户主键不能为空")
    private String userId;

    @ApiModelProperty(value = "用户手机号", example = "15155312412")
//    @NotBlank(message = "用户手机号不能为空")
    private String phone;

    @ApiModelProperty(value = "入金通道类型(1表示1000usdt 2表示3000usdt 3表示5000usdt)", example = "1")
    @NotNull(message = "入金通道类型不能为空")
    private Integer entryMoneyChannelType;

    @ApiModelProperty(value = "相关币种的资金划转相关的版本号", example = "0")
    @NotNull(message = "相关币种的资金划转相关的版本号不能为空")
    private Integer moneyTransferVersion;

    @ApiModelProperty(value = "AZ钱包的版本号", example = "1")
    @NotNull(message = "AZ钱包的版本号不能为空")
    private Integer azPlanWalletVersion;

    @ApiModelProperty(value = "兑换的相关币种类型", example = "XWC")
    @NotBlank(message = "兑换的相关币种类型不能为空")
    private String entryOtherCoinType;

    @ApiModelProperty(value = "交易密码", example = "******")
    @NotBlank(message = "交易密码不能为空")
    private String tranPwd;

    @ApiModelProperty(value = "兑换USD需要的XWC金额", example = "1")
    private BigDecimal xwcExchangeUSDAmount;

    @ApiModelProperty(value = "入金失败标识", example = "1")
    private Integer entryMoneyFailureFlag;

    @ApiModelProperty(value = "所有子账户的累计入金金额", example = "1")
    private BigDecimal totalEntryAmount;

    @ApiModelProperty(value = "用户相关版本号业务列表对象", example = "1")
    private List<UserRelativeVersionBO> recommenderRelativeVersionBOList;

    @ApiModelProperty(value = "用户VIP业务列表对象", example = "1")
    private List<UserVipBO> userVipBOS;

    @ApiModelProperty(value = "所有用户的矿池版本号", example = "1")
    private List<AZPlanBalance> userOrePoolVersionList;

}
